package com.jacklin.aspect;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

/**
 *
 * 卖家登陆授权（AOP实现身份验证）
 *
 * @Author 林必昭
 * @Date 2019/4/16 20:21
 */

@Aspect
@Component
@Slf4j
public class SellerAuthorizedAspect {

    @Autowired
    private RedisTemplate redisTemplate;
    /**
     * @Pointcut的用法：
     * 1.execution(* *(..))--表示匹配所有的方法
     * 2.execution(public * com.jacklin.controller.seller*.*(..))--controller包下以seller开头的controller的共有方法
     * 3.execution(* com.jacklin.controller..*.*(..))--controller包下的所有方法
     */

//    @Pointcut("execution(public * com.jacklin.controller.Seller*.*(..))"+
//            "&& !execution(public * SellerUserController.*(..))")//这里排掉SellerUserController下的登入登出方法
//    public void verify(){
//
//    }
//
//    @Before("verify()")
//    public void doVerify(){
//        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        HttpServletRequest request = attributes.getRequest();
//        //查询cookie
//        Cookie cookie = CookieUtil.get(request, CookieConstant.TOKEN);
//        if (cookie==null){
//            log.info("【登陆校验】Cookie查不到token");
//            throw new SellerAuthorException();
//        }
//        //去redis里查询
//        String tokenValue = (String) redisTemplate.opsForValue().get(String.format(RedisContant.TOKEN_PRIFIX, cookie.getValue()));
//        if (StringUtils.isEmpty(tokenValue)){
//            log.warn("【登陆校验】Redis查找不到token");
//            throw new SellerAuthorException();
//        }
//
//    }
}
